package com.xique.park.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xique.park.bean.domain.ParkInfo;
import com.xique.park.bean.dto.ParkInfoStatisticsDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ParkInfoMapper extends BaseMapper<ParkInfo> {

    /**
     * 查询车场信息
     *
     * @param id 车场信息ID
     * @return 车场信息
     */
    ParkInfo selectParkInfoById(Long id);

    /**
     * 统计项目在线状态
     *
     * @param province   省编码
     * @param city       市编码
     * @param district   区县编码
     * @param deptId     服务商ID
     * @param parkInfoId 项目ID
     * @return 项目在线状态
     */
    ParkInfoStatisticsDto selectOnLineStatus(@Param("province") Integer province,
                                             @Param("city") Integer city,
                                             @Param("district") Integer district,
                                             @Param("deptId") Long deptId,
                                             @Param("parkInfoId") Long parkInfoId);

    /**
     * 统计区域内的停车场数量
     *
     * @param province   省编码
     * @param city       市编码
     * @param district   区县编码
     * @param deptId     服务商ID
     * @param parkInfoId 项目ID
     * @return 停车场数量
     */
    Integer selectParkNum(@Param("province") Integer province,
                          @Param("city") Integer city,
                          @Param("district") Integer district,
                          @Param("deptId") Long deptId,
                          @Param("parkInfoId") Long parkInfoId);

    /**
     * 查询省市区内的项目
     *
     * @param country    国家编码
     * @param province   省编码
     * @param city       市编码
     * @param district   区县编码
     * @param deptId     服务商ID
     * @param parkInfoId 项目ID
     * @return 省市区内的项目列表
     */
    List<ParkInfoStatisticsDto> selectParkListByArea(@Param("country") Integer country,
                                                     @Param("province") Integer province,
                                                     @Param("city") Integer city,
                                                     @Param("district") Integer district,
                                                     @Param("deptId") Long deptId,
                                                     @Param("parkInfoId") Long parkInfoId);

    /**
     * 查询车场信息
     *
     * @param id 车场信息ID
     * @return 车场信息
     */
    ParkInfo selectParkInfoWithAreaById(Long id);
    /**
     *  附近的停车场
     * @param minlng
     * @param maxlng
     * @param minlat
     * @param maxlat
     * @param keyWord
     * @return
     */
    List<ParkInfo> selectNearByParkInfo(double minlng, double maxlng, double minlat, double maxlat, String keyWord);
}
